<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // async是一个generator函数的语法糖 
        // Generator 函数是 ES6 提供的一种异步编程解决方案


        // async 是对Generator函数的完善 他返回了一个promise

        // await必须和async 函数一起合用 否则会报错
        // async函数返回一个promise await能够获取promise执行的结果

        let num = 0

        // setTimeout(() => {
        //     num = 1
        //     fn(num)
        // }, 0)

        // // console.log(num);
        // function fn(a) {
        //     console.log(a);
        // }

        


        function axios() {
            // resolve 是一个函数 他可以将promise转化为成功的状态
            // reject 也是一个函数 他可以将promise转化为失败的状态
            // 这两个函数无论执行哪一个 promise都已经产生了结果
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    num = 3
                    resolve(num)
                }, 2000)
            })
        }

        // vue中常用的axios请求本身就是使用promise封装完成的
        async function fun() {
            console.log(await axios());
            
        }

        // console.log(fun())
        fun()
    </script>
</body>
</html>